package com.zzwtec.validation.core;

import java.util.Map;

import com.zzwtec.validation.AnnotationValidator;
import com.zzwtec.validation.ValidateResult;

/**
 * @author  草原狼
 *
 * 2017年8月22日
 */

public interface ValidatorEngine {
	
	/**
	 * 拷贝验证器集合
	 * @return
	 */
	public Map<String,AnnotationValidator> copyValidMaps();
	
	/**
	 * 遍历所有字段，用所有解析器进行校验，如果校验失败，则终止校验返回结果，如果校验成功，同样返回校验结果
	 * 支持忽略校验器，解决DTO被多接口共用的情况 
	 * @param t
	 * @param rule
	 * @return
	 */
	public <T> ValidateResult validate(T t, RuntimeValidateRule<T> rule);	
	
	/**
	 * 遍历所有字段，用所有解析器进行校验，如果校验失败，则终止校验返回结果，如果校验成功，同样返回校验结果 
	 * @param t
	 * @return
	 */
	public <T> ValidateResult validate(T t);
	
	/**
	 * 注册验证器
	 * @param parser
	 */
	public void register(String name,AnnotationValidator parser);
}
